﻿<?php
class PrivilegeController extends Zend_Controller_Action
{
	private $_uiVar = array();
	private $_privilege;

	public function init()
	{
		$this->_uiVar["html"]["title"] = BMSC_Html::WEBSITE_TITLE;

		try
		{
			$readerDb = Zend_Registry::get("READER_DB");
			$writerDb = Zend_Registry::get("WRITER_DB");

			$this->_privilege = new BMSC_Privilege($readerDb, $writerDb);
		}
		catch (Exception $ex)
		{
			echo $ex->getMessage();
		}
	}
	
	// used for listing 'page' privs in 'member' module
	public function getPagePrivilegesAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_GET;
				$pagePrivileges = $this->_privilege->getPagePrivileges($formData['id']);
				if(!empty($pagePrivileges)) {	
					echo json_encode(array('code' => 0, 'data' => $pagePrivileges));
				} else {
					echo json_encode(array('code' => -99, 'data' => 'Không tìm thấy'));
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));		
	}
	
	// used for listing pages in 'member' module
	public function getPagesAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$pages = $this->_privilege->getPageList();
				if(!empty($pages)) {
					echo json_encode(array('code' => 0, 'data' => $pages));
				} else {
					echo json_encode(array('code' => -99, 'data' => 'Không tìm thấy'));
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));		
	}
	
	public function updateAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$params = $_POST;
				
				// update 'news' and 'banner' privileges				
				$module = $params['module'];
				if($module == 'news' || $module == 'banner') {
					$result = $this->_privilege->updatePrivileges($params['privMemberID'],
																  $params['module'],
																  isset($params['selectPrivCheckBox']) ? 1 : 0,
																  isset($params['insertPrivCheckBox']) ? 1 : 0,
																  isset($params['updatePrivCheckBox']) ? 1 : 0,
																  isset($params['deletePrivCheckBox']) ? 1 : 0);
					echo json_encode(array('code' => 0, 'data' => 'Cập nhật thành công.'));
				} else if($module == 'account') {
					$result = $this->_privilege->updatePrivileges($params['privMemberID'],
																  $params['module'],
																  isset($params['selectPrivCheckBox']) ? 1 : 0,
																  null, // 'account' module doesn't use insert priv
																  isset($params['updatePrivCheckBox']) ? 1 : 0,
																  isset($params['deletePrivCheckBox']) ? 1 : 0);
					echo json_encode(array('code' => 0, 'data' => 'Cập nhật thành công.'));
				} else if($module == 'page') { // update 'page' privileges
					$result = $this->_privilege->updatePagePrivileges($params['memberID'],
																	  isset($params['op']) ? $params['op'] : array(),
																	  isset($params['np']) ? $params['np'] : array()
																	  );
					if($result == -1) {
						echo json_encode(array('code' => -1, 'data' => 'Lỗi xảy ra khi xóa quyền'));
					} else {
						echo json_encode(array('code' => 0, 'data' => $result));
					}
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}	
	
	// used for listing 'news' and 'banner' privs in 'member' module
	public function getAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_GET;
				$privileges = $this->_privilege->getPrivilege($formData['id'], $formData['module']);				
				if(!empty($privileges)) {
					$privilege = $privileges[0];
					echo json_encode(array('code' => 0, 'data' => $privilege));
				} else {
					$priv = array('SELECT_PRIV' => 0, 'INSERT_PRIV' => 0, 'UPDATE_PRIV' => 0, 'DELETE_PRIV' => 0);
					echo json_encode(array('code' => 0, 'data' => $priv));
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	// used for getting privs in 'news' and 'banner' module, 
	/// this action controller is different to getAction() in which it uses MEMBER_ID in session
	public function getPrivsAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_GET;
				$privileges = $this->_privilege->getPrivilege($adminSession->member['ID'], $formData['module']);				
				if(!empty($privileges)) {
					$privilege = $privileges[0];
					echo json_encode(array('code' => 0, 'data' => $privilege));
				} else {
					$priv = array('SELECT_PRIV' => 0, 'INSERT_PRIV' => 0, 'UPDATE_PRIV' => 0, 'DELETE_PRIV' => 0);
					echo json_encode(array('code' => 0, 'data' => $priv));
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));
	}
	
	public function getPagePrivsAction()
	{
		$adminSession = new Zend_Session_Namespace("BMSC_ADMIN");
		if ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1))
		{
			try
			{
				$formData = $_GET;
				$pagePrivileges = $this->_privilege->getPagePrivileges($formData['id']);
				if(!empty($pagePrivileges)) {	
					echo json_encode(array('code' => 0, 'data' => $pagePrivileges));
				} else {
					echo json_encode(array('code' => -99, 'data' => 'Không tìm thấy'));
				}
			}
			catch (Exception $ex)
			{
				echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
			}
		}
		else
			echo json_encode(array("code" => -100, "data" => "- Bạn cần phải đăng nhập để thực hiện chức năng này. <br />"));	
	}
}